package toOffer;

/**
 * <h3>leetcode</h3>
 *
 * @author YuanAo
 * @date 2024/4/16 19:35
 * @description <p>最近请求次数</p>
 */


/**
 * 题目：请实现如下类型 RecentCounter，它是统计过去 3000ms 内的请
 * 求次数的计数器。该类型的构造函数 RecentCounter 初始化计数器，请求数
 * 初始化为 0；函数 ping(int t)在时间 t 添加一个新请求（t 表示以毫秒为单位
 * 的时间），并返回过去 3000ms 内（时间范围为[t-3000, t]）发生的所有请求
 * 数。假设每次调用函数 ping 的参数 t 都比之前调用的参数值大。
 */
public class toOffer7_2_42 {

    private int[] arr = new int[100000];
    private int num = 0;

    public toOffer7_2_42() {

    }

    public int ping(int t) {
        int result = 0;
        arr[num] = t;
        num++;

        for (int i = 0; i < num; i++) {
            if (arr[i] >= t - 3000 && arr[i] <= t){
                result++;
            }
        }

        return result;
    }

    public static void main(String[] args) {
        String[] inputs01 = {"RecentCounter", "ping", "ping", "ping", "ping"};
        int[][] inputs02 = {{}, {1}, {100}, {3001}, {3002}};

        toOffer7_2_42 recentCounter = new toOffer7_2_42();
        for (int i = 1; i < inputs02.length; i++) {
            System.out.println(recentCounter.ping(inputs02[i][0]));
        }

    }

}
